package com.small.site.vo.req;

import com.small.site.pojo.SysPermission;
import com.small.site.validation.ValidationType;
import com.small.site.vo.BaseForm;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.beans.BeanUtils;
import org.springframework.util.StringUtils;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * @author xiaochi
 * @date 2021/12/16 14:14
 * @desc PermissionAddReqVo
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class PermissionReqVo extends BaseForm<SysPermission> {

    @NotBlank(message = "id 不能为空",groups = ValidationType.update.class)
    private String id;// id

    @NotBlank(message = "菜单权限名称不能为空")
    private String title;// 菜单权限名称

    private String icon;// 菜单图标icon

    private String perms;// 菜单权限标识

    private String url;// 接口地址

    private String method;// 请求方式 和url 配合使用 (我们用 路径匹配的方式做权限管理的时候用到

    private String name;// name与前端vue路由name约定一致

    @NotNull(message = "所属菜单不能为空")
    private String pid;// 父级id

    private Integer orderNum;// 排序码

    @NotNull(message = "菜单权限类型不能为空")
    private Integer type;// 菜单权限类型(1:目录;2:菜单;3:按钮)

    private Integer status;// 状态1:正常 0：禁用

    private String code;// 编码(前后端分离 前段对按钮显示隐藏控制 btn-permission-search 代表 菜单权限管理的列表查询按钮)

    /**
     * 获取实例
     *
     * @return 返回实体类
     */
    @Override
    public SysPermission buildEntity() {
        SysPermission sysPermission = new SysPermission();
        BeanUtils.copyProperties(this,sysPermission);
        if (StringUtils.isEmpty(this.id)){
            sysPermission.setCreateTime(new Date());
            sysPermission.setUpdateTime(new Date());
        }else{
            sysPermission.setUpdateTime(new Date());
        }
        return sysPermission;
    }
}